package unq.uis.robots.ui;

import org.uqbar.arena.actions.MessageSend;
import org.uqbar.arena.bindings.NotNullObservable;
import org.uqbar.arena.layout.VerticalLayout;
import org.uqbar.arena.widgets.Button;
import org.uqbar.arena.widgets.Label;
import org.uqbar.arena.widgets.Panel;
import org.uqbar.arena.widgets.TextBox;
import org.uqbar.arena.widgets.tables.Column;
import org.uqbar.arena.widgets.tables.Table;
import org.uqbar.arena.windows.Dialog;
import org.uqbar.arena.windows.WindowOwner;

import unq.uis.robots.applicationsModels.ComprarRobotApplicationModel;
import unq.uis.robots.model.Robot;

public class ComprarRobotWindow extends Dialog<ComprarRobotApplicationModel>{

	private static final long serialVersionUID = 1L;

	public ComprarRobotWindow(WindowOwner owner, ComprarRobotApplicationModel model) {
		super(owner, model);
		// TODO Auto-generated constructor stub
	}
	
	@Override
	protected void createFormPanel(Panel mainPanel) {
		this.setTitle("Comprar");
		Panel panel = new Panel(mainPanel);
		panel.setLayout(new VerticalLayout());
		
		new Label(panel).setText("Dinero disponible:");
		Label dinero = new Label(panel);
		dinero.bindValueToProperty("jugador.dinero");
		new Label(panel).setText("Ingrese cuanto desea ofertar:");
		new TextBox(panel).bindValueToProperty(ComprarRobotApplicationModel.OFERTA);
		
		this.crearTablaDeRobotsDisponibles(mainPanel);	
	}
	
	private void crearTablaDeRobotsDisponibles(Panel mainPanel) {
		Panel panel = new Panel(mainPanel);
		new Label(panel).setText("Robots disponibles para comprar");
		Table<Robot> table = new Table<Robot>(panel, Robot.class);
		table.bindItemsToProperty(ComprarRobotApplicationModel.ROBOTSDELSISTEMA);
		
		table.bindSelection(ComprarRobotApplicationModel.ROBOTSELECCIONADO);
		
		Column<Robot> nombreColumn = new Column<Robot>(table);
		nombreColumn.setTitle("Nombre");
		nombreColumn.setFixedSize(100);
		nombreColumn.bindContentsToProperty(Robot.NOMBRE);	
		
		Column<Robot> poderColumn = new Column<Robot>(table);
		poderColumn.setTitle("Poder");
		poderColumn.setFixedSize(100);
		poderColumn.bindContentsToProperty(Robot.PODERTOTAL);

		Column<Robot> porcentajeColumn = new Column<Robot>(table);
		porcentajeColumn.setTitle("Nivel Deterioro");
		porcentajeColumn.setFixedSize(100);
		porcentajeColumn.bindContentsToProperty(Robot.DANIO);
		
		Column<Robot> precioBaseColumn = new Column<Robot>(table);
		precioBaseColumn.setTitle("Precio Base");
		precioBaseColumn.setFixedSize(100);
		precioBaseColumn.bindContentsToProperty(Robot.PRECIOBASE);
		
		table.setWidth(600);
		table.setHeigth(300);
		
	}

	@Override
	protected void addActions(Panel actions) {
		NotNullObservable elementSelected = new NotNullObservable(ComprarRobotApplicationModel.ROBOTSELECCIONADO);		

		new Button(actions)
			.setCaption("Aceptar")
			.onClick(new MessageSend(this, "accept"))
			.setAsDefault()
			.disableOnError()
			.bindEnabled(elementSelected);

		new Button(actions)
			.setCaption("Cancelar")
			.onClick(new MessageSend(this, "cancel"));
	}


	

}
